package com.zmc.lostfound.auth.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zmc.lostfound.auth.entity.PermissionEntity;
import com.zmc.lostfound.auth.vo.PermissionSaveVO;
import com.zmc.lostfound.common.utils.PageParams;
import com.zmc.lostfound.common.utils.PageResult;
import com.zmc.lostfound.common.utils.Result;

import java.util.List;

/**
 * @author ZMC
 * @description 权限菜单管理业务接口
 * @email 2869581855@qq.com
 * @date 2023-07-05 15:17:37
 */
public interface PermissionService extends IService<PermissionEntity> {

    /**
     * 分页模糊查询权限信息
     *
     * @param pageParams 分页查询参数
     * @return PageResult
     */
    PageResult queryPage(PageParams pageParams);

    /**
     * 按id查询权限信息
     *
     * @param id 权限id
     * @return PermissionEntity
     */
    PermissionEntity queryInfoById(Long id);

    /**
     * 按用户id查询权限信息
     *
     * @param userId 用户id
     * @return List<PermissionEntity>
     */
    List<PermissionEntity> queryInfoByUserId(Long userId);

    /**
     * 按角色id查询所拥有权限信息
     *
     * @param roleId 角色id
     * @return List<PermissionEntity>
     */
    List<PermissionEntity> queryInfoByRoleId(Long roleId);

    /**
     * 按角色id查询所有权限信息
     *
     * @param roleId     角色id
     * @param pageParams 分页参数
     * @return PageResult
     */
    PageResult queryInfoByRoleIdWithAll(Long roleId, PageParams pageParams);

    /**
     * 新增权限信息
     *
     * @param permissionSaveVO 权限菜单新增/修改请求体
     * @return Result
     */
    Result insertPermission(PermissionSaveVO permissionSaveVO);

    /**
     * 修改权限信息
     *
     * @param permissionSaveVO 权限菜单新增/修改请求体
     * @return Result
     */
    Result updatePermission(PermissionSaveVO permissionSaveVO);

    /**
     * 按权限id删除权限信息
     *
     * @param permissionId 权限id
     * @return Result
     */
    Result deleteByPermissionId(Long permissionId);

}

